import { createStore } from 'vuex'
import user from './modules/user'
import cart from './modules/cart'
import product from './modules/product'

// 创建Vuex store实例
export default createStore({
  // 严格模式，确保状态变更只能通过mutation进行
  strict: process.env.NODE_ENV !== 'production',
  
  // 状态模块
  modules: {
    user,    // 用户模块：处理用户登录、注册、个人信息等
    cart,    // 购物车模块：处理购物车商品管理
    product  // 商品模块：处理商品列表、详情、分类等
  },
  
  // 全局状态
  state: {
    // 应用加载状态
    loading: false,
    // 全局错误信息
    error: null,
    // 应用主题
    theme: 'light'
  },
  
  // 全局mutations
  mutations: {
    // 设置加载状态
    SET_LOADING(state, loading) {
      state.loading = loading
    },
    
    // 设置错误信息
    SET_ERROR(state, error) {
      state.error = error
    },
    
    // 切换主题
    TOGGLE_THEME(state) {
      state.theme = state.theme === 'light' ? 'dark' : 'light'
    }
  },
  
  // 全局actions
  actions: {
    // 显示加载状态
    showLoading({ commit }) {
      commit('SET_LOADING', true)
    },
    
    // 隐藏加载状态
    hideLoading({ commit }) {
      commit('SET_LOADING', false)
    },
    
    // 设置错误信息
    setError({ commit }, error) {
      commit('SET_ERROR', error)
      // 3秒后自动清除错误信息
      setTimeout(() => {
        commit('SET_ERROR', null)
      }, 3000)
    }
  },
  
  // 全局getters
  getters: {
    // 获取加载状态
    isLoading: state => state.loading,
    
    // 获取错误信息
    error: state => state.error,
    
    // 获取当前主题
    theme: state => state.theme
  }
}) 